package com.c2b.algorithm.leetcode.base;

/**
 * <a href='https://leetcode.cn/problems/find-common-elements-between-two-arrays/'>找到两个数组中的公共元素(Find Common Elements Between Two Arrays)</a>
 * <p>给你两个下标从 0 开始的整数数组 nums1 和 nums2 ，它们分别含有 n 和 m 个元素。</p>
 * <p>
 * 请你计算以下两个数值：
 *     <ul>
 *         <li>统计 0 <= i < n 中的下标 i ，满足 nums1[i] 在 nums2 中 至少 出现了一次。</li>
 *         <li>统计 0 <= i < m 中的下标 i ，满足 nums2[i] 在 nums1 中 至少 出现了一次。</li>
 *     </ul>
 * </p>
 * <p>请你返回一个长度为 2 的整数数组 answer ，按顺序 分别为以上两个数值。</p>
 *
 * <p>
 * <b>示例</b>
 * <pre>
 * 示例 1：
 *      输入：nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6]
 *      输出：[3,4]
 *      解释：分别计算两个数值：
 *          - nums1 中下标为 1 ，2 和 3 的元素在 nums2 中至少出现了一次，所以第一个值为 3 。
 *          - nums2 中下标为 0 ，1 ，3 和 4 的元素在 nums1 中至少出现了一次，所以第二个值为 4 。
 *
 * 示例 2：
 *      输入：nums1 = [3,4,2,3], nums2 = [1,5]
 *      输出：[0,0]
 *      解释：两个数组中没有公共元素，所以两个值都为 0 。
 * </pre>
 * </p>
 *
 * <p>
 * <b>提示：</b>
 *  <ul>
 *      <li>n == nums1.length</li>
 *      <li>m == nums2.length</li>
 *      <li>1 <= n, m <= 100</li>
 *      <li>1 <= nums1[i], nums2[i] <= 100</li>
 *  </ul>
 * </p>
 *
 * @author c2b
 * @since 2024/1/22 17:48
 */
public class LC2956FindCommonElementsBetweenTwoArrays_S {

    static class Solution {
        public int[] findIntersectionValues(int[] nums1, int[] nums2) {
            int[] cnt1 = new int[101];
            for (int num : nums1) {
                ++cnt1[num];
            }
            int[] cnt2 = new int[101];
            for (int num : nums2) {
                ++cnt2[num];
            }

            int[] resArr = new int[2];
            for (int num : nums1) {
                if (cnt2[num] > 0) {
                    ++resArr[0];
                }
            }
            for (int num : nums2) {
                if (cnt1[num] > 0) {
                    ++resArr[1];

                }
            }
            return resArr;
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        Printer.printArrayInt(solution.findIntersectionValues(new int[]{4, 3, 2, 3, 1}, new int[]{2, 2, 5, 2, 3, 6}));
        Printer.printArrayInt(solution.findIntersectionValues(new int[]{3, 4, 2, 3}, new int[]{1, 5}));
    }
}
